home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / pluginy Firefox / 1843 / 1843.xpi / content / firebug / shortcuts.js < prev    next >
Text File  |  2010-01-15  |  3KB  |  87 lines

  1. /* See license.txt for terms of usage */
  2.  
  3. FBL.ns( function() { with (FBL) {
  4.  
  5. // ************************************************************************************************
  6. // Constants
  7.  
  8. const Cc = Components.classes;
  9. const Ci = Components.interfaces;
  10. const prefs = Cc["@mozilla.org/preferences-service;1"].getService(Ci.nsIPrefBranch2);
  11.  
  12. /**
  13.  * ShortcutsModel object implements keyboard shortcuts logic.
  14.  */
  15. Firebug.ShortcutsModel = extend(Firebug.Module,
  16. {
  17.     dispatchName: "shortcuts",
  18.  
  19.     initializeUI: function()
  20.     {
  21.         this.initShortcuts();
  22.     },
  23.  
  24.     initShortcuts : function()
  25.     {
  26.         var branch = prefs.getBranch("extensions.firebug.key.shortcut.");
  27.         var shortcutNames = branch.getChildList("", {});
  28.         shortcutNames.forEach(this.initShortcut);
  29.     },
  30.  
  31.     initShortcut : function(element, index, array)
  32.     {
  33.         var branch = prefs.getBranch("extensions.firebug.key.");
  34.         var shortcut = branch.getCharPref("shortcut." + element);
  35.         var tokens = shortcut.split(' ');
  36.         var key = tokens.pop();
  37.         var modifiers = tokens.join(',')
  38.  
  39.         var keyElem = document.getElementById("key_" + element);
  40.         if (!keyElem)
  41.         {
  42.             //if key is not defined in xul, add it
  43.             keyElem = document.createElement('key');
  44.             keyElem.className = "fbOnlyKey";
  45.             keyElem.id = "key_" + element;
  46.             keyElem.command = "cmd_" + element;
  47.             $('mainKeyset').appendChild(keyElem);
  48.         }
  49.  
  50.         //choose between key or keycode attribute
  51.         if (key.length == 1)
  52.         {
  53.             keyElem.setAttribute('modifiers', modifiers);
  54.             keyElem.setAttribute('key', key);
  55.             keyElem.removeAttribute('keycode');
  56.         }
  57.         else if (KeyEvent['DOM_' + key]) //only set valid keycodes
  58.         {
  59.             keyElem.setAttribute('modifiers', modifiers);
  60.             keyElem.setAttribute('keycode', key);
  61.             keyElem.removeAttribute('key'); //in case default shortcut uses key rather than keycode
  62.         }
  63.     },
  64.  
  65.     // UI Commands
  66.     customizeShortcuts: function()
  67.     {
  68.         var args = {
  69.             FBL: FBL,
  70.             FBTrace: FBTrace
  71.         };
  72.  
  73.         // Open customize shortcuts dialog. Pass FBL into the XUL window so,
  74.         // common APIs can be used (e.g. localization).
  75.         window.openDialog("chrome://firebug/content/customizeShortcuts.xul", "", 
  76.             "chrome,centerscreen,dialog,modal,resizable=yes", args);
  77.     }
  78. });
  79.  
  80. // ************************************************************************************************
  81. // Registration
  82.  
  83. Firebug.registerModule(Firebug.ShortcutsModel);
  84.  
  85. // ************************************************************************************************
  86. }});
  87.